Non-Volatile Memory (NVM) provides an intermediate alternative between high-performance Dynamic Random Access Memory (DRAM) and cost-effective hard disk drives (HDDs). Generally, the read performance of NVM is similar to DRAM and the write performance of NVM is significantly faster than HDDs. NVM is byte-addressable and writes to NVM are durable, so database data stored therein may be accessed directly after a crash and restart. Conventionally, restart would require reloading such database data from hard disk into DRAM.
In order to replace DRAM with NVM for the storage of certain database data structures, the creation, population and persistence of a new data structure should trigger the creation and population of a new NVM block. When the data structure is no longer needed, the removal of the data structure should trigger the removal of its NVM block. A further challenge presented by the storing of database data structures in NVM is the integration of the lifecycle of the NVM blocks, which have their own persistence mechanism, with the transactional guarantees of the database, which may be implemented based on savepoints and redo/undo logging.